<?php

include_once("library/facil3/core/controller/admin/DefautAdmin.php");
include_once("library/facil3/navigation/http/HttpResult.class.php");
include_once("library/facil3/core/controller/interface/HTTPControllerInterface.class.php");
include_once "".Config::FOLDER_APPLICATION."/controller/admin/vo/AdminResult.class.php";
include_once Config::getFolderView("admin/HttpClientAjax.class.php");
include_once "library/facil3/core/modules/user/dao/UserDAO.class.php";

/**
 * @author 	Renato Miawaki
 * @desc	Controller central, se nenhuma outra controller for encontrada, esta controller é iniciada
 * 			init é chamada caso nenhum metodo que combine com a requisição seja encontrada
 */
class Admin extends DefautAdmin implements HTTPControllerInterface{
	
	public function __construct($arrayRestFolder = NULL){
		
		//Debug::print_r($arrayRestFolder);
		if(count($arrayRestFolder) == 0){
			//echo " testando ... _construct";
			parent::__construct();
		} else {
			if($arrayRestFolder[0] == ""){
				
			}
		}
		//se não for para a pagina de login
		foreach($arrayRestFolder as $value){
			if($value != "login" && $value != "check_login"){
				//verifica se esta logado
				parent::__construct();
			}
		}
	}
	
	public function init(){	
		$returnResult = new HttpResult();
		$returnResult->setSuccess(1);
		//iniciando o resultado para o html
		$retornoDaPaginaHTML = new AdminResult();
		//salvando o objeto de resultado de html no retorno
		$returnResult->setHttpContentResult($retornoDaPaginaHTML);
		return $returnResult;
	}
	public function login(){		
		$returnResult = new HttpResult();
		$returnResult->setSuccess(1);
		
		//iniciando o resultado para o html
		$retornoDaPaginaHTML = new AdminResult();
		
		//salvando o objeto de resultado de html no retorno
		$returnResult->setHttpContentResult($retornoDaPaginaHTML);
		
		return $returnResult;
	}

	public function checkLogin(){
		//Debug::print_r($_POST);
		//busca o post
		$login		= DataHandler::getValueByArrayIndex($_POST, "login");
		$password 	= DataHandler::getValueByArrayIndex($_POST, "password");
		
		//iniciando o retorno padrao em http client ajax
		$returnResult = new HttpClientAjax();
		
		//se não validar retornar erro 
		if(!Validation::blank($password, 1) && !Validation::blank($login, 1)){
			$returnResult->success = 0;
			$returnResult->message = "Envie Login $login e Senha $password " ;
		}else{
			//cadastra o usuario e os detalhes do mesmo
			$DAO = UserDAO::getInstance();
			if(FALSE){
				$DAO = new UserDAO();
			}
			$user_type = 1;//admin
			$ReturnDataVO = $DAO->select(UserDAO::RETURN_STD_OBJECT, NULL, 1, $user_type, $login, $password);
			//Debug::print_r($ReturnDataVO);
			//exit();
			if($ReturnDataVO->success && count($ReturnDataVO->result) > 0){
				if($ReturnDataVO->result[0]->user_type_id == 1){
					UserClient::setId($ReturnDataVO->result[0]->id);
					UserClient::setTypeId($ReturnDataVO->result[0]->user_type_id);
					UserClient::setActiveTime(time());
					//setando sucesso true caso tenha dado certo
					$returnResult->setFecthReturnDataVO($ReturnDataVO);
				}else{
					//print_r($ReturnDataVO);
					$returnResult->success = 0;
					$returnResult->message = "Usuario sem permissão!";
				}
			}else{
				//print_r($ReturnDataVO);
				$returnResult->success = 0;
				$returnResult->message = "Erro ao Logar!";
			}
		}
		//Navigation::redirect("admin/");
		echo $returnResult->convertToJson();
		exit();
	}
	
	public function logout(){
		UserClient::kill();
		Navigation::redirect("");
	}
}